Skip to content

thread: add pthread-based threading module#72

Draft
arkjedrz wants to merge 1 commit intoeclipse-score:mainfrom
qorix-group:arkjedrz_custom-thread
Draft

thread: add pthread-based threading module#72
arkjedrz wants to merge 1 commit intoeclipse-score:mainfrom
qorix-group:arkjedrz_custom-thread

Conversation

@arkjedrz
Copy link
Contributor

Parametrizable threading module.

Notes for Reviewer

Pre-Review Checklist for the PR Author

  • PR title is short, expressive and meaningful
  • Commits are properly organized
  • Relevant issues are linked in the References section
  • Tests are conducted
  • Unit tests are added

Checklist for the PR Reviewer

  • Commits are properly organized and messages are according to the guideline
  • Unit tests have been written for new behavior
  • Public API is documented
  • PR title describes the changes

Post-review Checklist for the PR Author

  • All open points are addressed and tracked via issues

References

Closes #

@github-actions
Copy link

github-actions bot commented Mar 13, 2026

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run --lockfile_mode=error //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.4.2) and connecting to it...
INFO: Invocation ID: ce9d9451-3540-4553-862b-bf0427512b94
Computing main repo mapping: 
Computing main repo mapping: 
WARNING: For repository 'rules_python', the root module requires module version rules_python@1.4.1, but got rules_python@1.8.3 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'bazel_skylib', the root module requires module version bazel_skylib@1.7.1, but got bazel_skylib@1.8.2 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'rules_rust', the root module requires module version rules_rust@0.61.0, but got rules_rust@0.67.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'rules_cc', the root module requires module version rules_cc@0.1.1, but got rules_cc@0.2.14 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
WARNING: For repository 'buildifier_prebuilt', the root module requires module version buildifier_prebuilt@7.3.1, but got buildifier_prebuilt@8.2.0.2 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
Loading: 
Loading: 0 packages loaded
Loading: 0 packages loaded
Loading: 0 packages loaded
    currently loading: 
Loading: 0 packages loaded
    currently loading: 
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)
Analyzing: target //:license-check (1 packages loaded, 0 targets configured)

Analyzing: target //:license-check (34 packages loaded, 9 targets configured)

Analyzing: target //:license-check (93 packages loaded, 16 targets configured)

Analyzing: target //:license-check (143 packages loaded, 1088 targets configured)

Analyzing: target //:license-check (143 packages loaded, 1088 targets configured)

Analyzing: target //:license-check (154 packages loaded, 1319 targets configured)

Analyzing: target //:license-check (155 packages loaded, 3179 targets configured)

Analyzing: target //:license-check (165 packages loaded, 3236 targets configured)

Analyzing: target //:license-check (165 packages loaded, 3236 targets configured)

Analyzing: target //:license-check (165 packages loaded, 3236 targets configured)

Analyzing: target //:license-check (168 packages loaded, 5125 targets configured)

Analyzing: target //:license-check (169 packages loaded, 5249 targets configured)

Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[13 / 17] [Prepa] JavaToolchainCompileClasses external/rules_java+/toolchains/platformclasspath_classes
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 5 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/formatted.txt
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[15 / 17] [Prepa] JavaToolchainCompileBootClasspath external/rules_java+/toolchains/platformclasspath.jar
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[16 / 17] [Prepa] Building license.check.license_check.jar ()
Analyzing: target //:license-check (197 packages loaded, 5552 targets configured)
[17 / 17] no actions running
INFO: Analyzed target //:license-check (198 packages loaded, 9886 targets configured).
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 28.438s, Critical Path: 3.20s
INFO: 17 processes: 12 internal, 4 processwrapper-sandbox, 1 worker.
INFO: Build completed successfully, 17 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions
Copy link

The created documentation from the pull request is available at: docu-html

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new thread Rust crate that provides a pthread-based, parameterizable thread-spawning API (scheduler policy/priority, CPU affinity, stack size) and integrates it into the workspace build (Cargo + Bazel).

Changes:

  • Introduce thread crate with spawn + JoinHandle, plus ThreadParameters/SchedulerParameters.
  • Implement pthread_attr_* configuration for scheduling, affinity, and stack size.
  • Register the crate in the workspace (Cargo.toml, Cargo.lock) and Bazel (src/thread/BUILD).

Reviewed changes

Copilot reviewed 6 out of 7 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/thread/thread.rs Core pthread-based implementation and unit tests.
src/thread/parameters.rs Public parameter types for scheduler/affinity/stack size, plus tests.
src/thread/lib.rs Crate module wiring and public re-exports.
src/thread/Cargo.toml New crate manifest using workspace libc.
src/thread/BUILD Bazel targets for the new Rust library and its tests.
Cargo.toml Add src/thread to workspace members/default-members and deps.
Cargo.lock Lockfile updates for new thread crate and libc.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new thread workspace crate providing a pthread-backed API to spawn threads with configurable scheduler policy/priority, CPU affinity, and stack size.

Changes:

  • Introduces a new thread crate with spawn, JoinHandle, and ThreadParameters/SchedulerParameters.
  • Adds a minimal POSIX/pthread FFI layer and unit tests for attributes/spawn behavior.
  • Registers the new crate in the workspace (Cargo + Bazel).

Reviewed changes

Copilot reviewed 7 out of 8 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
src/thread/thread.rs Implements pthread-backed spawning/joining + attribute handling and tests.
src/thread/posix.rs Adds POSIX/pthread FFI declarations and CPU set helpers.
src/thread/parameters.rs Adds public parameter types for scheduler/affinity/stack size + tests.
src/thread/lib.rs Crate module wiring and public re-exports.
src/thread/Cargo.toml New crate manifest and dependencies.
src/thread/BUILD Bazel targets for library and unit tests.
Cargo.toml Adds src/thread to workspace members and dependencies.
Cargo.lock Records resolved workspace dependency updates (e.g., libc).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +119 to +124
if rc != 0 {
panic!("pthread_attr_destroy failed, rc: {rc}");
}
}
}

Comment on lines +172 to +176
/// An owned permission to join on a thread (block on its termination).
pub struct JoinHandle<T> {
thread: Thread,
_marker: PhantomData<T>,
}
@arkjedrz arkjedrz force-pushed the arkjedrz_custom-thread branch from cadcd38 to 915a0b6 Compare March 16, 2026 11:01
Parametrizable threading module.
@arkjedrz arkjedrz force-pushed the arkjedrz_custom-thread branch from 915a0b6 to 237f7fb Compare March 17, 2026 12:46
@arkjedrz arkjedrz temporarily deployed to workflow-approval March 17, 2026 12:46 — with GitHub Actions Inactive
@arkjedrz arkjedrz deployed to workflow-approval March 17, 2026 12:46 — with GitHub Actions Active
let result = catch_unwind(AssertUnwindSafe(move || (data.f)()));
match result {
Ok(value) => Box::into_raw(Box::new(value)).cast(),
Err(_) => std::process::abort(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with log?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with panic containing explanation what happened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

3 participants